// 导入必要的模块和函数
import el from '../utils/el'
import box from './box'
import cellElement from './cellElement'
import barElement from './barElement'

/**
 * 根据提供的布局信息测量和创建 小节 元素
 * @param {Object} measureLayout - 包含 小节 布局信息的对象
 * @param {Array} measureLayout.cellsLayouts - 小节 中的 单元格布局数组
 * @param {Array} measureLayout.leftBarLayouts - 小节 中的 左侧栏布局数组
 * @param {Array} measureLayout.rightBarLayouts - 小节 中的 右侧栏布局数组
 * @returns {Element} 创建的元素节点
 */
export default function measureElement(measureLayout) {
  // 从measureLayout对象中解构出所需的布局信息
  const { cellsLayouts, leftBarLayouts, rightBarLayouts } = measureLayout

  // 创建一个'g'元素，并添加各种布局元素作为其子元素
  return el.create('g', [
    // 以下是一个被注释掉的布局创建示例
    // box(measureLayout, 'green'),

    // 遍历cellsLayouts数组，对每个元素调用cellElement函数，并将结果作为子元素添加到'g'元素中
    cellsLayouts.map(cellElement),

    // 如果leftBarLayouts存在，则遍历leftBarLayouts数组，对每个元素调用barElement函数，并将结果作为子元素添加到'g'元素中
    // 否则，添加一个空数组
    leftBarLayouts ? leftBarLayouts.map(layout => barElement(layout)) : [],

    // 如果rightBarLayouts存在，则遍历rightBarLayouts数组，对每个元素调用barElement函数，并将结果作为子元素添加到'g'元素中
    // 否则，添加一个空数组
    rightBarLayouts ? rightBarLayouts.map(layout => barElement(layout)) : []
  ])

}
